package com.sxpi.zixun.controller.note;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.sxpi.zixun.bo.NoteBo;
import com.sxpi.zixun.common.enums.ResultStatusEnum;
import com.sxpi.zixun.common.utils.fn.asserts.Vsserts;
import com.sxpi.zixun.controller.BaseController;
import com.sxpi.zixun.pojo.Note;
import com.sxpi.zixun.service.note.INoteService;
import com.sxpi.zixun.vo.NoteVo;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.pug.generator.anno.PugDoc;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;

/**
 * @Author: 董伟豪
 * @Date: 2022/9/15 19:25
 */
@RestController
@RequiredArgsConstructor
@Slf4j
@PugDoc(name="笔记专栏管理",tabname="kss_note")
public class NoteController extends BaseController {

    private final INoteService noteService;

    /**
     * 查询笔记专栏管理列表信息
     * @return
     */
    @PostMapping("/note/list")
    @PugDoc(name="查询笔记专栏管理列表信息")
    public List<NoteBo> findNoteList() {
        return noteService.findNoteList();
    }

    /**
     * 查询笔记专栏管理列表信息并分页
     * @param noteVo
     * @return
     */
    @PostMapping("/note/load")
    @PugDoc(name="查询笔记专栏管理列表信息并分页")
    public IPage<NoteBo> findNotes(@RequestBody NoteVo noteVo) {
        return noteService.findNotePage(noteVo);
    }

    /**
     * 根据笔记专栏管理id查询明细信息
     * @param id
     * @return
     */
    @PostMapping("/note/get/{id}")
    @PugDoc(name="根据笔记专栏管理id查询明细信息")
    public NoteBo getNoteById(@PathVariable("id") String id) {
        Vsserts.isEmptyEx(id, ResultStatusEnum.ID_NOT_EMPTY);
        return noteService.getNoteById(new Long(id));
    }

    /**
     * 保存和修改笔记专栏管理
     * @param note
     * @return
     */
    @PostMapping("/note/saveupdate")
    @PugDoc(name="保存和修改笔记专栏管理")
    public NoteBo saveUpdateNote(@RequestBody Note note) {
        return noteService.saveUpdateNote(note);
    }

    /**
     * 根据笔记专栏管理id删除笔记专栏管理
     * @param id
     * @return
     */
    @PostMapping("/note/delete/{id}")
    @PugDoc(name="根据笔记专栏管理id删除笔记专栏管理")
    public int deleteNoteById(@PathVariable("id") String id) {
        Vsserts.isEmptyEx(id, ResultStatusEnum.ID_NOT_EMPTY);
        return noteService.deleteNoteById(new Long(id));
    }

    /**
     * 根据笔记专栏管理ids批量删除笔记专栏管理
     * @param noteVo
     * @return
     */
    @PostMapping("/note/delBatch")
    @PugDoc(name="根据笔记专栏管理ids批量删除笔记专栏管理")
    public boolean delNote(@RequestBody NoteVo noteVo) {
        Vsserts.isEmptyEx(noteVo.getBatchIds(), ResultStatusEnum.ID_NOT_EMPTY);
        return noteService.delBatchNote(noteVo.getBatchIds());
    }
}
